package com.shrcl.engineerprocess.domain;

import com.shrcl.engineerprocess.domain.TSCServiceTypeInstance;
import com.shrcl.engineerprocess.domain.impl.TSCServiceTypeDefinitionImpl;
import com.shrcl.engineerprocess.domain.proxy.TSCServiceTypeDefinitionProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import java.util.Collection;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

@EntityImplementation(implementBy = TSCServiceTypeDefinitionImpl.class)
public interface TSCServiceTypeDefinition extends IModelObject {
  public abstract Collection<TSCServiceTypeInstance> getValues();
  
  public abstract TSCServiceTypeInstance createAndAddtoValues();
  
  public abstract TSCServiceTypeInstance createAndAddtoValues(final Procedure1<TSCServiceTypeInstance> updater);
  
  public abstract TSCServiceTypeDefinition removeFromValues(final TSCServiceTypeInstance tSCServiceTypeInstance);
  
  public abstract TSCServiceTypeDefinition removeAllValues();
  
  public abstract void init();
  
  public abstract void addServiceTypeInstance(final Procedure1<? super TSCServiceTypeInstance> init);
  
  public abstract TSCServiceTypeDefinitionProxy toProxy();
}
